package com.fowo.api.sys.annotation;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fowo.api.sys.entity.enums.SysDataActivityAction;
import com.fowo.api.sys.service.SysDataActivityService;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 提供数据活动记录
 * @apiNote 主要操作是异步的，不保证处理成功，失败会被忽略
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DataActivity {

    /**
     * 定义此操作的行为
     */
    SysDataActivityAction action();

    /**
     * 模型类
     */
    Class<?>[] entityClass() default {};

    /**
     * Mapper 类
     */
    Class<BaseMapper<?>>[] mapperClass() default {};

    /**
     * 显示名称
     */
    String displayName() default "";

    /**
     * 数据对象标识
     */
    String dataSource() default "";

    /**
     * 自定义格式化消息
     */
    String message() default "";

    /**
     * 自定义处理器
     */
    Class<? extends SysDataActivityService.CustomHandler>[] customHandler() default {};
}
